home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / KBDEVENT.D < prev    next >
Encoding:
Modula Definition  |  1989-09-18  |  3.2 KB  |  70 lines

  1. DEFINITION MODULE KbdEvents;
  2. (*------------------------------------------------------------------------------
  3.  * Version 2.6  (für MEGAMAX MOS 2.2)
  4.  *------------------------------------------------------------------------------
  5.  * Copyright (c) 1989, 90, 91 by Michael Seyfried
  6.  *------------------------------------------------------------------------------
  7.  *                            Modulbeschreibung
  8.  *
  9.  * Bei Tastaturereignissen in GEM-Programmen kann man den Status der Sonder-
  10.  * tasten (Shift, Alternate, Control) beim Bearbeiten des Ereignisses in der
  11.  * Tastaturbehandlungsroutine des Anwenderprogramms überprüfen. Die Routinen
  12.  * des AES liefern dabei aber immer den aktuellen Status der Sondertasten zu-
  13.  * rück. Richtig wäre es, wenn jedem Tastendruck schon beim Auftritt des
  14.  * Ereignisses die Sondertastenbelegung zugeordnet würde. Der Tastendruck wird
  15.  * von der Tastaturbehandlungsroutine oft falsch analysiert, weil sich zwischen
  16.  * Auftritt und Behandlung des Tastaturereignisses der Sondertastenstatus
  17.  * ändern kann.
  18.  *
  19.  * Wird dieses Modul importiert und die Prozedur 'InstallKbdEvents' aufgerufen,
  20.  * so erhält man bei 'MultiEvent' und 'HandleEvents' den Status der Sondertasten
  21.  * richtig, d.h. zum Zeitpunkt des Tastendrucks, zurück.
  22.  * Dazu wird das Bit 3 in 'conterm' gesetzt und beim Auftritt eines Tastatur-
  23.  * ereignisses die Bits 24..31 aus dem Tastaturpuffer (entspricht dem Wert von
  24.  * 'Kbshift()' beim Tastendruck) nach 'int_out[4]' übertragen (Man erhält also
  25.  * auch den Status der CapsLock-Taste und der Maustasten).
  26.  * Wird 'KeyboardEvents' verwendet, um auf ein Tastaturereignis zu warten, muß
  27.  * man sich den Sondertastenstatus anschließend direkt aus int_out[4] besorgen.
  28.  *
  29.  * Hinweis: Dieses Modul hängt sich in folgende Vektoren:
  30.  *
  31.  *          $088            TRAP#2
  32.  *          $118            IKBD/MIDI
  33.  *          $400            etv_timer
  34.  *
  35.  *          Dabei wird die XBRA-Kennung 'KbEv' verwendet.
  36.  *------------------------------------------------------------------------------
  37.  *                            Bekannte Probleme:
  38.  *
  39.  * Wenn man durch wilde Hackerei den Tastaturpuffer zum Überlaufen bringt, darf
  40.  * man nicht erwarten, daß auch noch der Sondertastenstatus dazu geliefert wird.
  41.  * Es wird dann einfach der AES-Wert zurückgegeben.
  42.  * Da sich die Routinen mit dem Puffer atomatisch syncronisieren, werden weitere
  43.  * Tastendrücke wieder richtig geliefert. Man kann also mit diesem "Problem"
  44.  * leben.
  45.  *------------------------------------------------------------------------------
  46.  *)
  47.  
  48.  
  49. PROCEDURE KbdEventsInstalled(): BOOLEAN;
  50. (*
  51.  * Wert: genau dann TRUE, wenn DIESES Modul sich auf die o. a. Vektoren
  52.  *       installiert hat.
  53.  *)
  54.  
  55. PROCEDURE InstallKbdEvents;
  56. (*
  57.  * Diese Routine muß man aufrufen, wenn man dieses Modul aktiv setzen will.
  58.  * Dann liefern, wie oben beschrieben, die AES-Routinen den Sondertastenstatus
  59.  * richtig zurück.
  60.  *)
  61.  
  62. PROCEDURE DeInstallKbdEvents;
  63. (*
  64.  * Nach dem Aufruf dieser Routine sind die Funktionen dieses Moduls inaktiv.
  65.  * Die o.a. Vektoren werden dabei restauriert.
  66.  * Diese Prozedur wird bei Terminierung dieses Moduls automatisch aufgerufen.
  67.  *)
  68.  
  69. END KbdEvents.
  70.